import App from './App'
// #ifndef VUE3
import Vue from 'vue'
Vue.config.productionTip = false
// 导入网络请求的包
import {
  $http
} from '@escook/request-miniprogram';
// (1)导入store实例对象 Vuex大仓库
import store from '@/store/store.js';

// 在uniapp中也有一个顶级对象叫uni，将$http挂载到uni身上
uni.$http = $http;
// 封装一个消息提示框的方法，并挂载到顶级对象uni身上
uni.$showMsg = function(title = '数据加载失败！', duration = 1500) {
  uni.showToast({
    title, //表示提示框的提示标题，默认提示：数据加载失败！
    duration, //表示这个提示框会在 多少秒后自动关闭， 默认值1.5秒
    icon: 'none' //表示这个提示框不需要展示图标
  })
}

// 自定义 header 请求头：
// 请求开始之前做一些事情
// $http.beforeRequest = function (options) {
//   if (options.url.indexOf('/home/catitems') !== -1) {
//     options.header = {
//       'X-Test': 'AAA',
//     }
//   }
// }


// 拦截器本质是一个函数
// 网络请求会把请求报文发给服务端，在请求拦截器里面可以加token，响应拦截器可以把服务端返回的数据做一些处理，加工之类的。
// 配置$http的请求拦截器
$http.beforeRequest = function(options) {
  // 在请求拦截器中开启loading效果
  uni.showLoading({
    title: '数据加载中...'
  });

  // 判断请求的是否为有权限的 API 接口
  if (options.url.indexOf('/my/') !== -1) {
    // 为请求头对象 对象等于一个新对象 添加身份认证字段token
    options.header = {
      // 字段的值可以直接从 vuex 中进行获取
      Authorization: store.state.m_user.token
    }

  }



}

// 配置$http的响应拦截器
$http.afterRequest = function(options) {
  uni.hideLoading()
}

// 配置请求根路径
$http.baseUrl = 'https://api-ugo-web.itheima.net/api'


App.mpType = 'app';
// 创建Vue实例对象app vm        vc
const app = new Vue({
  ...App,
  // (2) 将 store 挂载到 Vue 实例上
  store,
})

app.$mount()

// #endif

// #ifdef VUE3
import {
  createSSRApp
} from 'vue'
export function createApp() {
  const app = createSSRApp(App)
  return {
    app
  }
}
// #endif
